/**
 * <p>Title: MaterialPackageSvc</p>
 * <p>物料件管理</p>
 * <p>Copyright: Shanghai Batchsight Pharmaceutical Technologies, Inc. Copyright(c) 2016</p>
 * @author Zuo Yefeng
 * @version 1.0
 * <pre>Histroy:
 *       2016-11-22  Zuo Yefeng  Create
 *</pre>
*/

package cn.jhg.account.service;

import java.util.List;

import cn.jhg.account.entity.MaterialPackage;
import cn.jhg.account.util.ServiceResult;

/**
 * @author Yefeng
 * @version 1.0
 * @created 22-11月-2016 9:30:12
 */
public interface MaterialPackageSvc {

	/**
	 * 新增物料件
	 * @param package	物料件实体
	 * @param sid		签名id
	 * @param iuid		调用者id
	 * @return			新增物料件的id
	 */
	public ServiceResult<Integer> addPackage(MaterialPackage materialPackage, int sid, int iuid);
	// 实体包含  t_ibcp_material_package 表中字段及 mongodb 中属性
	// prop_id 保存属性 id
	// 实际属性保存在 mongodb.ibcp.material_package_property 中
	// 物料件属性格式：
	// {
	//    属性名1:{value:属性值, uom:单位, cate:分类, desc:描述},
	//    属性名2:{value:属性值, uom:单位, cate:分类, desc:描述},
	//    属性名3:{value:属性值, uom:单位, cate:分类, desc:描述},
	//    ...
	// }


	/**
	 * 更新物料件
	 * @param package	物料件实体
	 * @param sid		签名id
	 * @param iuid		调用者id
	 * @return			ErrorCode
	 */
	public ServiceResult<Object> updatePackage(MaterialPackage materialPackage, int sid, int iuid);

	/**
	 * 删除物料件
	 * @param id	物料件id
	 * @param sid	签名id
	 * @param iuid	调用者id
	 * @return		ErrorCode
	 */
	public ServiceResult<Object> deletePackage(int id, int sid, int iuid);

	/**
	 * 根据id查询物料件
	 * @param id	物料件id
	 * @param iuid	调用者id
	 * @return		物料件实体，ErrorCode
	 */
	public ServiceResult<MaterialPackage> queryPackageById(int id, int iuid);

	/**
	 * 根据标签id查询物料件
	 * @param labId	标签id
	 * @param iuid	调用者id
	 * @return		物料件实体，ErrorCode
	 */
	public ServiceResult<MaterialPackage> queryPackageByLabel(int labId, int iuid);

	/**
	 * 按条件查找物料件
	 * @param batId			批次id（等于0表示所有）
	 * @param seq			顺序号（等于空表示所有）
	 * @param locStoId		存储位置id（等于0表示所有）
	 * @param locTranId		转移位置id（等于0表示所有）
	 * @param statId		状态id（等于0表示所有）
	 * @param iuid			调用者id
	 * @return				物料件id集合，ErrorCode
	 */
	public ServiceResult<List<Integer>> findPackage(int batId, String seq, int locStoId, int locTranId, int statId, int iuid);

	/**
	 * 按条件查找物料件
	 * @param batId			批次id（等于0表示所有）
	 * @param seq			顺序号（等于空表示所有）
	 * @param locStoId		存储位置id（等于0表示所有）
	 * @param locTranId		转移位置id（等于0表示所有）
	 * @param statId		状态id（等于0表示所有）
	 * @param iuid			调用者id
	 * @return				物料件实体集合，ErrorCode
	 */
	public ServiceResult<List<MaterialPackage>> findPackageDetail(int batId, String seq, int locStoId, int locTranId, int statId, int iuid);

}